package com.ericsson.middleware.ContextBroker;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import org.apache.commons.lang.builder.ToStringBuilder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
	"entities",
	"attributes",
	"reference",
	"duration",
	"notifyConditions",
	"throttling"
})
public class SubscribeContext {

	@JsonProperty("entities")
	private List<Entity> entities = new ArrayList<Entity>();
	@JsonProperty("attributes")
	private List<String> attributes = new ArrayList<String>();
	@JsonProperty("reference")
	private String reference;
	@JsonProperty("duration")
	private String duration;
	@JsonProperty("notifyConditions")
	private List<NotifyCondition> notifyConditions = new ArrayList<NotifyCondition>();
	@JsonProperty("throttling")
	private String throttling;
	@JsonIgnore
	private Map<String, Object> additionalProperties = new HashMap<String, Object>();

	@JsonProperty("entities")
	public List<Entity> getEntities() {
		return entities;
	}

	@JsonProperty("entities")
	public void setEntities(List<Entity> entities) {
		this.entities = entities;
	}

	@JsonProperty("attributes")
	public List<String> getAttributes() {
		return attributes;
	}

	@JsonProperty("attributes")
	public void setAttributes(List<String> attributes) {
		this.attributes = attributes;
	}

	@JsonProperty("reference")
	public String getReference() {
		return reference;
	}

	@JsonProperty("reference")
	public void setReference(String reference) {
		this.reference = reference;
	}

	@JsonProperty("duration")
	public String getDuration() {
		return duration;
	}

	@JsonProperty("duration")
	public void setDuration(String duration) {
		this.duration = duration;
	}

	@JsonProperty("notifyConditions")
	public List<NotifyCondition> getNotifyConditions() {
		return notifyConditions;
	}

	@JsonProperty("notifyConditions")
	public void setNotifyConditions(List<NotifyCondition> notifyConditions) {
		this.notifyConditions = notifyConditions;
	}

	@JsonProperty("throttling")
	public String getThrottling() {
		return throttling;
	}

	@JsonProperty("throttling")
	public void setThrottling(String throttling) {
		this.throttling = throttling;
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}

	@JsonAnyGetter
	public Map<String, Object> getAdditionalProperties() {
		return this.additionalProperties;
	}

	@JsonAnySetter
	public void setAdditionalProperty(String name, Object value) {
		this.additionalProperties.put(name, value);
	}

}